package com.powernode.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Redis配置类，用于自定义RedisTemplate的序列化方式
 * 解决默认序列化可能导致的key乱码和性能问题
 */
@Configuration
public class RedisConfig {
    /**
     * 自定义RedisTemplate配置，替换Spring Boot默认提供的RedisTemplate
     * 主要优化key的序列化方式，提升key的可读性和系统性能
     * @param redisConnectionFactory Redis连接工厂，由Spring自动注入
     * @return 配置好的RedisTemplate实例
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        // 设置Redis连接工厂，建立与Redis服务器的连接
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 设置key的序列化器为StringRedisSerializer
        // 解决默认JdkSerializationRedisSerializer导致的key乱码问题
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}